package DAO;

import models.Grado;
import java.util.List;
import javax.persistence.*;

public class GradoDao {

    protected EntityManager em;

    public List encontrarGrados() {
        EntityManagerFactory emf =
                Persistence.createEntityManagerFactory("sischoolPU");
        this.em = emf.createEntityManager();
        Query query = em.createQuery("SELECT g.idGrado FROM Grado g");
        List<Grado> lista = query.getResultList();
        em.close();
        emf.close();
        return (lista);
    }

    public Grado actualizarGradoCursos(int id, int numeroCursos) {
        EntityManagerFactory emf =
                Persistence.createEntityManagerFactory("sischoolPU");
        this.em = emf.createEntityManager();
        em.getTransaction().begin();
        Grado g = em.find(Grado.class, id); //se usa el entity manager para encontrarlo luego cuando se llame ActualizarGrado se hace commit y va a persistir el Grado actualizado
        if (g != null) {
//            g.setNumeroCursos(numeroCursos);
        }
        em.getTransaction().commit();
        em.close();
        emf.close();
        return g;
    }

    public Grado actualizarGradoAsignaturas(int id, int numeroAsignaturas) {
        EntityManagerFactory emf =
                Persistence.createEntityManagerFactory("sischoolPU");
        this.em = emf.createEntityManager();
        em.getTransaction().begin();
        Grado g = em.find(Grado.class, id); //se usa el entity manager para encontrarlo luego cuando se llame ActualizarGrado se hace commit y va a persistir el Grado actualizado
        if (g != null) {
            g.setNumeroasignaturas(numeroAsignaturas);
        }
        em.getTransaction().commit();
        em.close();
        emf.close();
        return g;
    }

    public EntityManager getEm() {
        return em;
    }

    public void setEm(EntityManager em) {
        this.em = em;
    }

    public Grado encontrarGrado(int idGrado) {
        EntityManagerFactory emf =
                Persistence.createEntityManagerFactory("sischoolPU");
        this.em = emf.createEntityManager();
        Grado g = em.find(Grado.class, idGrado);// con esta funcion se busca un dato por primary key, el primer parametro es nuestra clase entidad
        em.close();
        emf.close();
        return g;
    }
}
